#ifndef METHODS_H
#define METHODS_H

#include "libspngstream.h"

#define METHODS 21
#define MAX_BRT 254

/* methods */
void superpos(spng*);
void invert(spng*);
void flip(spng*);
void scanlines(spng*);
void burn(spng*);
void toonstep(spng*, int);
void toon(spng*);
void toonextreme(spng*);
void pinkify(spng*);
void more_x(spng*, int);
void morered(spng*);
void moreblue(spng*);
void moregreen(spng*);
void moreblack(spng*);
void lessred(spng*);
void lessblue(spng*);
void lessgreen(spng*);
void lessblack(spng*);
void average_x(spng*, int);
void averagered(spng*);
void averageblue(spng*);
void averagegreen(spng*);
void edge(spng*);
void gauss(spng*);

struct methods {
    char *name;
    void (*f)(spng*);
};

extern struct methods t[METHODS];

/* utility functions */
void apply_method(spng*, void(*method)(spng*));
void apply_kernel(spng*, float(*k)[], int);
int mult_by_kernel(png_byte(*s)[], float(*k)[], int);

#endif
